package com.gaga.metadata.entity.base;

import com.gaga.metadata.common.enums.JoinType;
import com.gaga.metadata.entity.base.join.BaseJoinCondition;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

/**
 * @author liujia
 * @version 1.0
 * @date 2022/12/12 17:41
 */
@Data
@Accessors(chain = true)
public class BaseJoin implements Serializable {

    /**
     * 连接类型
     */
    private JoinType joinType;

    /**
     * 连接左表的id 为了映射的冗余字段
     */
    private String leftTableId;

    /**
     * 连接左表的名称
     */
    private String leftTableName;

    /**
     * left别名
     */
    private String leftTableAliasName;

    /**
     * 左关联表的类型  virtual或者factual
     */
    private String leftTableType = "factual";

    /**
     * 左关联表sql
     */
    private String leftTableSql;

    /**
     * 连接右表的id 为了映射的冗余字段
     */
    private String rightTableId;

    /**
     * 连接右表的名称
     */
    private String rightTableName;

    /**
     * right别名
     */
    private String rightTableAliasName;

    /**
     * 右关联表的类型  virtual或者factual
     */
    private String rightTableType = "factual";

    /**
     * 右关联表sql
     */
    private String rightTableSql;

    /**
     * 连接conditions
     */
    private List<BaseJoinCondition> conditions;

    /**
     * 左表是否是基础数据
     */
    private Boolean leftTableIsBasicData = false;

    /**
     * 右表是否是基础数据
     */
    private Boolean rightTableIsBasicData = false;

    public void setLeftTableName(String leftTableName) {
        this.leftTableName = leftTableName;
    }

    public void setRightTableName(String rightTableName) {
        this.rightTableName = rightTableName;
    }

}
